﻿package mortal.game.view.task.drama.operations.npctalk
{
    import Message.Public.*;
    import com.mui.controls.*;
    import flash.text.*;
    import mortal.common.*;
    import mortal.game.cache.*;
    import mortal.game.view.common.*;

    public class TaskDramaTalkTextParser extends Object
    {
        public const Label_UserName:String = "{name}";
        public const Label_Choose:String = "{A,B}={";
        public const Label_Face:String = "      ";
        public static var _instance:TaskDramaTalkTextParser;

        public function TaskDramaTalkTextParser()
        {
            return;
        }// end function

        public function parse(param1:String, param2:int, param3:int, param4:int) : Array
        {
            var _loc_13:Array = null;
            var _loc_14:int = 0;
            var _loc_15:String = null;
            var _loc_16:String = null;
            var _loc_17:String = null;
            var _loc_18:String = null;
            var _loc_19:int = 0;
            var _loc_20:String = null;
            var _loc_21:int = 0;
            var _loc_22:String = null;
            var _loc_23:String = null;
            var _loc_24:String = null;
            var _loc_25:int = 0;
            var _loc_26:int = 0;
            var _loc_27:String = null;
            var _loc_28:TaskDramaTalkFaceData = null;
            var _loc_5:Boolean = false;
            var _loc_6:Boolean = false;
            var _loc_7:Array = [];
            var _loc_8:* = param1;
            while (_loc_8.indexOf(this.Label_UserName) >= 0)
            {
                
                _loc_8 = _loc_8.replace(this.Label_UserName, "<font color=\'#00FE2A\'>" + Cache.instance.role.playerInfo.name + "</font>");
            }
            while (_loc_8.indexOf(this.Label_Choose) >= 0)
            {
                
                _loc_13 = [];
                _loc_14 = _loc_8.indexOf(this.Label_Choose);
                _loc_13[0] = _loc_8.substr(0, _loc_14);
                _loc_13[1] = _loc_8.substr(_loc_14 + this.Label_Choose.length);
                _loc_15 = _loc_13[0];
                _loc_16 = _loc_13[1];
                _loc_14 = _loc_16.indexOf("}");
                _loc_17 = _loc_16.substr(0, _loc_14);
                _loc_18 = _loc_16.substr((_loc_14 + 1));
                _loc_13 = _loc_17.split(",");
                if (Cache.instance.role.entityInfo.sex == ESex._ESexMan)
                {
                    _loc_16 = _loc_13[0] + _loc_18;
                }
                else
                {
                    _loc_16 = _loc_13[1] + _loc_18;
                }
                _loc_8 = _loc_15 + _loc_16;
            }
            var _loc_9:* = UIFactory.gTextField("", 0, 0, param4, 400);
            var _loc_10:* = _loc_9.defaultTextFormat;
            _loc_10.leading = param2;
            _loc_10.size = param3;
            _loc_9.defaultTextFormat = _loc_10;
            _loc_9.width = param4;
            _loc_9.multiline = true;
            _loc_9.wordWrap = true;
            var _loc_11:Array = [];
            var _loc_12:int = 0;
            _loc_13 = _loc_8.split("/");
            _loc_8 = _loc_13[0];
            if (_loc_13.length >= 2)
            {
                _loc_19 = 1;
                while (_loc_19 < _loc_13.length)
                {
                    
                    _loc_20 = _loc_13[_loc_19];
                    _loc_21 = 1;
                    if (this.isNum(_loc_20.charAt(2)))
                    {
                        _loc_21 = 3;
                    }
                    else if (this.isNum(_loc_20.charAt(1)))
                    {
                        _loc_21 = 2;
                    }
                    else if (this.isNum(_loc_20.charAt(0)))
                    {
                        _loc_21 = 1;
                    }
                    else
                    {
                        _loc_8 = _loc_8 + ("/" + _loc_20);
                        ;
                    }
                    _loc_22 = _loc_20.substr(_loc_21);
                    _loc_23 = _loc_20.substr(0, _loc_21);
                    _loc_24 = this.Label_Face;
                    _loc_25 = 0;
                    if (_loc_23.indexOf("b") >= 0)
                    {
                        _loc_5 = true;
                        _loc_24 = _loc_24 + _loc_24;
                        _loc_25 = -12;
                    }
                    else
                    {
                        _loc_6 = true;
                    }
                    _loc_9.htmlText = _loc_8;
                    _loc_26 = _loc_9.numLines;
                    _loc_27 = _loc_9.getLineText((_loc_26 - 1));
                    _loc_8 = _loc_8 + _loc_24 + _loc_22;
                    _loc_28 = new TaskDramaTalkFaceData();
                    _loc_28.faceId = _loc_23;
                    _loc_28.faceX = DisplayUtil.getStringPixes(_loc_27, param3);
                    _loc_28.faceY = (_loc_26 - 1) * (param3 + param2 + 6) + _loc_25;
                    _loc_11.push(_loc_28);
                    _loc_19++;
                }
            }
            _loc_7.push(_loc_8);
            _loc_7.push(_loc_11);
            _loc_7.push(_loc_5);
            _loc_7.push(_loc_6);
            return _loc_7;
        }// end function

        private function isNum(param1:String) : Boolean
        {
            if (param1 == null)
            {
                return false;
            }
            if (param1 < "0")
            {
                return false;
            }
            if (param1 > "9")
            {
                return false;
            }
            return true;
        }// end function

        public static function get instance() : TaskDramaTalkTextParser
        {
            if (_instance == null)
            {
                _instance = new TaskDramaTalkTextParser;
            }
            return _instance;
        }// end function

    }
}
